﻿namespace Guru.Framework.Base
{
    using Guru.Framework.Management;

    internal interface IBaseDL
    {
        /// <summary>
        /// Gets IDbManager object for Db operations.
        /// </summary>
        IDbManager Manager { get; }

        /// <summary>
        /// Inserts AbstractBaseBO object and returns execution value.
        /// </summary>
        /// <param name="baseBO">IBaseBo object.</param>
        /// <returns>Returns Execution value of Insert query.</returns>
        int Insert(AbstractBaseBO baseBO);

        /// <summary>
        /// Inserts AbstractBaseBO object and returns Identity value.
        /// </summary>
        /// <param name="baseBO">IBaseBo object.</param>
        /// <returns>Returns Identity value</returns>
        int InsertAndGetId(AbstractBaseBO baseBO);

        /// <summary>
        /// Updates AbstractBaseBO object and returns execution value of delete query.
        /// </summary>
        /// <param name="baseBO">IBaseBo object.</param>
        /// <returns>returns execution value of delete query.</returns>
        int Delete(AbstractBaseBO baseBO);

        /// <summary>
        /// Updates AbstractBaseBO object and returns execution value of update query.
        /// </summary>
        /// <param name="baseBO">IBaseBo object.</param>
        /// <returns>returns execution value of update query.</returns>
        int Update(AbstractBaseBO baseBO);
    }
}
